1. Field of the Invention
This invention relates to the granting of access rights to users or services within a computing system environment, and particularly to the identification of subjected-executed and subject-granted access rights within programming code.
2. Description of Background
Before our invention programming and code execution environments, such as Java™ and Microsoft™ .NET Common Language Runtime (CLR), allowed for the granting of permissions to users or services, known as subjects. Typically, a subject is granted the permissions granted to its authenticated principals. Further, specialized functions can be called to execute specific actions under the authority of a respective subject. However, this approach has the potential to lead to security problems because it is difficult, if not impossible, to manually pre-determine the portions of code that will be executed under the authority of a subject, and further, the access rights the code is going to be granted by virtue of being executed by a subject.
As a result of, security policies have often been poorly defined. As such, the poor definition of security policies could lead to violations of the Principle of Least Privilege (PLP) if too many permissions have been granted, or further, to program execution stability problems if too few permissions have been granted. Traditionally, these problems have been resolved with testing and manual code inspection. However, testing is limited because if a particular test case does not cover a particular path of execution, security requirements may remain undiscovered until run time, rendering the application unstable. Manual code inspection is impractical, tedious, time consuming, and error prone. Furthermore, the source code of an application may even be unavailable, because it might have been machine generated, or purchased from a third party.
Therefore, there exist a need for methodologies to automatically determine the methods in a program that will be executed under the authority of a subject (i.e., a user or service) at the time of program execution, wherein the rights have been granted to subjects based on the current security policy are identified.